_Pragma("once")

#include "component.hpp"
#include "tool.hpp"

#include <array>

namespace sdl_engine::component::ecs {

class Entity final {
public:
    template <typename T>
    T* GetComponent() const {
        return components_.at(T::GetType()).get();
    }

    void SetComponent(Unique<Component> comp);

private:
    std::array<Unique<Component>, COMP_NUM> components_;
};

}
